package main

import "fmt"

// defer使用场景，连接数据库，打开文件，开始锁，
// 无论何种清空，最后都要记得的去关闭，解锁
// defer的语句在return之前执行
// 多个defer的执行顺序是栈的顺序，先进后出
// defer也是可以通过函数来修改返回值的
func deferReturn() (ret int) {
	defer func() {
		ret++
	}()
	return 10
}
func main() {
	defer fmt.Println("-----------1")
	defer fmt.Println("-----------2")
	fmt.Println("main---------end")

	number := deferReturn()
	fmt.Printf("deferReturn number=%d\n", number)
	// deferReturn number=11
	return
}
